<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>模仿接口--属性检查法</title>
</head>
<body>
<script src="Interface.js"></script>
<script>
    var CompositeForm=function (id,method,action) {
        this.implementsInterfaces=['Composite','FormItem'];
    //.....
    };
    function addForm(){
        if(!implements(formInstance,'Composite','FormItem')){
            throw new Error("object does not implement a required interface");
        }
        //.....
    }
    function implements(object){
        for(var i=1;i<arguments.length;i++){
            var interfaceName=arguments[i];
            var interfaceFound=false;
            for(var j=0;j<object.implementsInterfaces.length;j++){
                if(object.implementsInterfaces[j]===interfaceName){
                    interfaceFound=true;
                    break;
                }
            }
            if(!interfaceFound){
                return false;//没有找到这个接口
            }
        }
        return true;//否则返回所有接口都被找到了
    }
    //但是这中方法只是让你知道了他有这么个方法，但是他可能会漏写这个接口实现的方法。
</script>
</body>
</html>